Necroware's MCE Adapter
GITHUB: https://github.com/necroware/mce-adapter
The MCA-Adapter is a device, which can convert MDA (and Hercules), EGA and CGA to analogue RGBS signal. It supports following features.
Converts digital MDA, Hercules, CGA, low-res EGA, high-res EGA to analog RGBS or RGBHV/VGA signal
Color DAC for 3, 4, 16 and 64 color modes
Switchable composite sync from H- and V-Sync
Loop through HV-Sync, colors conversion only mode
Switchable composite sync inversion
Includes IBM's "brown-hack"for CGA and 16-colors EGA modes
Switchable green and white monochrome screen emulation
Youtube Videos:
Part 1: Why GBS-8200 is not a CGA/EGA converter https://youtu.be/7c3yLX52ZEs
Part 2: Theory and implementation https://youtu.be/aUFKB4b5KpE
Part 3: Showtime https://youtu.be/F1685u-QQ0k
Why did I make this?
Because why not? I wanted to get some practice with EDA and I needed such an adapter to test some of my old graphics cards.
Why might somebody need this?
If you want to connect your old PC with MDA, CGA or EGA graphics to a more modern VGA display, it's going to be difficult. First of all, this old graphics standards are digital, so RGB information is sent as a bunch of 1 and 0. VGA on the other hand understands only analogue signals, so f.e. the intensity of the red color is defined by some value between two voltages and not by a discrete value. So the first job of this adapter is to translates digital video signals into analogue video signals. However, this is may be not enough, since the horizontal sync signal of the old video standards is not supported by a usual VGA monitor. For this purpose, a very famous upscaler named GBS-8200 and compatible can be used to convert the sync signal to VGA compatible level. However, GBS-8200 expects such called composite sync signal, where horizontal and vertical sync signals are combined. This is, where this adapter comes into place, it doesn't only convert digital RGB signal to analogue, but also composite sync signal from incoming horizontal and vertical signals. Long story short, you will need this adapter to connect a MDA, CGA or EGA graphics card to an analogue RGB monitor, either by using GBS-8200 converter or the adapter standalone, in case your monitor supports horizontal frequencies down to 15kHz.
Why didn't I take an existing solution?
Well, first of all, I wanted to gain some experience in this. Second, I actually was heavily inspired by a YouTube video by TheRasteri, where he evaluates the output possibilities of an old PC, talks about the technical background and creates his own adapter. You can see the video here:
Part 1: https://www.youtube.com/watch?v=kHhpTq-WSJk
Part 2: https://www.youtube.com/watch?v=vwKA1z8tg1g
As I saw his solution with a ROM, I instantly thought, that the same thing can be done using a programmable logic IC, like GAL16V8. It would have some benefits in timing behaviour over a solution with ROM and be also very flexible. So, here it is.
Which modes does it support?
The adapter can convert MDA, Hercules, CGA, 16 colors EGA and 64 colors EGA to standard VGA (RGBHV) or RGBS (combined HV-sync). The sync output frequency is always the same as the input frequency. The adapter can only compose HV-sync, but doesn't actively change it. The digital color signal is converted to analogue color signal, so any analogue RGB monitor should understand it.
Jumpers and switches
Basic jumper description:
J1 mono (jumper off) or color (jumper on)
J2 mode select (depends on the color or mono mode)
J3 invert composite sync signal (see composite signal)
J4 composite sync (1-2) or HV-sync (2-3)
Mode selection:
ModeJ1J2J3MDA/Hercules white (18kHz)OFFOFFONMDA/Hercules green (18kHz)OFFONONCGA/EGA 16 colors (15kHz)ONOFFOFFEGA 64 color (21kHz)ONONON
Composite sync signal
Every end of line the graphics adapter sends a so called H-Sync or horizontal synchronization signal. Every end of the screen the graphics adapter sends so called V-Sync or vertical synchronization signal. The history of this principle goes many years back to cathode tubes, old TVs and monitors. This signals are used for the retraction of the ray in the monitor, so it knows when to restart to draw the next line or the whole screen. The history and the theory behind it is quite long and is not the point here. Important to understand is that different video modes, MDA, CGA, EGA are using different V- and H-Sync frequencies. It is important for the monitor to be able to distinguish them and it does by the frequency of the sync signals, but also by a polarity of the signals. Sometimes one of the sync signals is high positive and sometimes it is low positive. This also helps the monitor to detect it properly, but some monitors don't take it into account and in such cases the Jumper J3 can be helpful. If you have problems with the sync signal with one of the modes try to flip this jumper to get the sync signal inverted. This jumper has however no meaning, if you set the adapter to HV-sync mode (Jumper J4 to 2-3). Here is the overview of the different video modes, their sync frequencies and sync polarities:
Video ModeH-SyncV-SyncMDA+ 18kHz- 50HzCGA+ 15kHz+ 60HzEGA low+ 15kHz+ 60HzEGA high+ 21kHz- 60Hz
Usually, you only need to invert the composite sync signal only if V-Sync signal is negative. In the columns H- and V-Sync + means high-positive and - means low-positive sync signal. EGA exists in two variants low resolution of up to 640x200 and high resolution with up to 720x350, hence the higher H-Sync frequency of 21kHz, since 15kHz are just not enough to draw 350 lines with 60Hz.
How to use this stuff?
Take the gerber files and make a PCB.
Assemble the board
Compile code/mceplug.eqn using EQN2JED tool
Write the compiled jed file to a GAL16V8 IC
Put it into the board and connect the cables f.e. CGA -> MCE Adapter -> GBS-8200 -> Analog RGB Monitor
Bill of materials
Reference#LCSCDescriptionC11C383039electrolythic capacitor 220µFD11C402218diode 1N5819H11C492405pin header 1x6J1231C65114pin header 2x3J41C429954pin header 1x3PWR11C46398USB-B mini portPWR21C152154pin header 1x2 (+5V connector)R1 R2 R33C58592resistor 470 Ohm (or 680 Ohm)R4 R5 R63C58608resistor 330 OhmR71C57438resistor 100 OhmR81C57435resistor 1k OhmU11C6509GAL16V8B (or compatible)VIDEO_IN11C141882DB9 female connector (MDA/EGA/CGA)VIDEO_OUT11C75754DIB15 female connector (VGA)
Tested with following monitors
GBS-8200 with original hardware (only 15kHz modes work)
GBS-8200 with gbs-control firmaware (Hercules and hi-res EGA sync unstable)
NEC Multisync LCD1970NX 19" TFT (everything works fine, Hercules is not in full screen, but works stable)
EIZO L365 15" TFT (only Hi-Res EGA works, doesn't support 15kHz CGA nor 50Hz Hercules)
Necroware's MCE Adapter
*PCBWay community is a shared platform and we are not responsible for any design issues.
- Comments(0)
- Likes(6)
- Engineer Jan 16,2024
- syuu831 Oct 08,2023
- Adam Laskowski Oct 04,2023
- Engineer Jun 12,2023
- Tor-Eirik Bakke Lunde Jun 12,2023
- Bryan Gibson Jun 07,2023
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Nicolas The Wizard
- RA Cart / ECI Extender V1.0 Full ECI and Cart RA orientation.BOM:1x Card Edge Connector 7x2P 2.54mm 240-141x Card Edge Connector...
- RA XE / XL Cart Extender Simple RA orientation of the cartridge slot.BOM:1 x Card Edge Connector 15x2P 2.54mm 240-30
- XE SuperCart 128 Atari Super XE Cart 128KB Cartridge for Atari 8 Bit Computers.
- XE SuperCart 128 Atari Small Max Cart 128KB Cartridge for Atari 8 Bit Computers.
- XE SuperCart 128 Atari Larger Max Cart 128KB Cartridge for Atari 8 Bit Computers.
- XE SuperCart 128 Atari Brown Cart 128KB Cartridge for Atari 8 Bit Computers.
- Another RS-232 to PS/2 Adapter rev. 6 SMD GITHUB: https://github.com/nsinav/PS2-AdapterImportant to Know:Please use a Female DB9 90° portATMEL...
- Atari XE C25953 emmu unit on GAL16v8 ORIGINAL GITHUB: https://github.com/mikulski-lab/C25953-emmu
- SNES2ATARI V2 for Atari 7800 GITHUB: https://github.com/nsinav/SNES2AtariThis is a working project. Games must be specifically co...
- Atari 7800 - A78 Super Cart (Work in Progress) ORIGINAL GITHUB: https://github.com/tdididit/a78-supercart
- Atari 7800 - A78 Simple Cart Original GITHUB: https://github.com/tdididit/a78-simplecart
- Atari 7800 - A78 SD Cart Original GITHUB: https://github.com/tdididit/a78-sdcart
- Atari 7800 - A78 Flashcart Plus Original GITHUB: https://github.com/tdididit/a78-flashcartplus
- Atari 7800 - A78 Flashcart Original GITHUB: https://github.com/tdididit/a78-flashcart
- Necroware's XT Prototyping Board Original GITHUB: https://github.com/necroware/xt-prototyping-board
- Necroware's MCE Adapter 02/2024 rev. GITHUB: https://github.com/necroware/mce-adapterYoutube Video: https://www.youtube.com/watch?v=f9ryi...
- Colecovision 8K/16K/24K/32K Cartridge Features:Create 8K, 16K, 24K and 32K Cartridge games for the Colecovision system.Uses easily availab...
- Atari 5200 16K/32K Cartridge Features:Create 16K and 32K Cartridge games for the Atari 5200 system.Uses easily available, off-the...
-
Robot with WiFi control and servos driven by ESP32
9 0 0 -
Commodore 1551 Drive Cartridge Replacement
156 0 2 -
RCMHardwareByte-v2.3
111 0 0 -
Terminal Curiosity PCB Ruler
329 0 1 -
(DIY) COMMODORE 64 DEAD-TEST (781220) DIAGNOSTIC CARTRIDGE
370 0 2 -
Creative Micro Designs Inc. CMD FD-2000 / FD-4000 3D Printable Case
404 0 0 -
Creative Micro Designs Inc. CMD FD-2000 / FD-4000 Metal Case
578 0 0 -